def hold_retrieve_mon_1():
  """ DN1 call to DN2,  DN2 hold, DN2 internal  call to DN3, rel. DN2, DN2 retrieve, rel. DN1"""
  DN1.MakeCall(DN2)
  DN2.AnswerCall()
  DN2.HoldCall()
  DN2.MakeCall(DN3)
  DN3.AnswerCall()
  DN2.ReleaseCall()
  DN2.RetrieveCall()
  DN1.ReleaseCall()


def hold_retrieve_mon_2():
  """ Inbound call to DN1,  DN1 hold, DN1 internal  call to DN2, rel. DN1, DN1 retrieve, rel.ExtDn"""
  Ext1DN1.MakeCall(DN1)
  DN1.AnswerCall()
  DN1.HoldCall()
  DN1.MakeCall(DN2)
  DN2.AnswerCall()
  DN1.ReleaseCall()
  DN1.RetrieveCall()
  Ext1DN1.ReleaseCall()

def hold_retrieve_mon_3():
  """ Outbound call DN1 to ExtDN,  DN1 hold, DN1 intern. call to DN2, rel. DN1, DN1 retrieve, rel.ExtDn"""
  DN1.MakeCall(Ext1DN2)
  Ext1DN2.AnswerCall()
  DN1.HoldCall()
  DN1.MakeCall(DN2)
  DN2.AnswerCall()
  DN1.ReleaseCall()
  DN1.RetrieveCall()
  Ext1DN2.ReleaseCall()

def hold_retrieve_mon_4():
  """ DN1 call to DN2,  DN2 hold, DN2 outbound call , rel. DN2, DN2 retrieve, rel. DN1"""
  DN1.MakeCall(DN2)
  DN2.AnswerCall()
  DN2.HoldCall()
  DN2.MakeCall(Ext1DN2)
  Ext1DN2.AnswerCall()
  DN2.ReleaseCall()
  DN2.RetrieveCall()
  DN1.ReleaseCall()
  

def hold_retrieve_mon_5():
  """ Inbound call to DN1,  DN1 hold, DN1 outbound  call,DN1 retrieve, rel.ExtDn"""
  Ext1DN1.MakeCall(DN1)
  DN1.AnswerCall()
  DN1.HoldCall()
  DN1.MakeCall(Ext1DN2)
  Ext1DN2.AnswerCall()
  DN1.ReleaseCall()
  DN1.RetrieveCall()
  Ext1DN1.ReleaseCall()

def hold_retrieve_mon_6():
  """ DN1 call to DN2,  DN2 hold, DN2 unsuccesful intern. call to DN3, DN2 retrieve, rel. DN1"""
  DN1.MakeCall(DN2)
  DN2.AnswerCall()
  DN2.HoldCall()
  DN2.MakeCall(DN3)
  DN2.ReleaseCall()
  DN2.RetrieveCall()
  DN1.ReleaseCall()

def hold_retrieve_mon_7():
  """ Inbound call to DN1,  DN1 hold,  DN1 unsuccesful intern. call to DN2, DN1 retrieve, rel.ExtDn"""
  Ext1DN1.MakeCall(DN1)
  DN1.AnswerCall()
  DN1.HoldCall()
  DN1.MakeCall(DN2)
  DN1.ReleaseCall()
  DN1.RetrieveCall()
  Ext1DN1.ReleaseCall()

def hold_retrieve_mon_8():
  """ Outbound call DN1 to ExtDN,  DN1 hold, DN1 unsuccesful intern. call,DN1 retrieve, rel.ExtDn"""
  DN1.MakeCall(Ext1DN2)
  Ext1DN2.AnswerCall()
  DN1.HoldCall()
  DN1.MakeCall(DN2)
  DN1.ReleaseCall()
  DN1.RetrieveCall()
  Ext1DN2.ReleaseCall()

def hold_retrieve_mon_9():
  """ DN1 call to DN2,  DN2 hold, DN2 unsuccesful outbound call, DN2 retrieve, rel. DN1"""
  DN1.MakeCall(DN2)
  DN2.AnswerCall()
  DN2.HoldCall()
  DN2.MakeCall(Ext1DN2)
  DN2.ReleaseCall()
  DN2.RetrieveCall()
  DN1.ReleaseCall()

def hold_retrieve_mon_10():
  """ Inbound call to DN1,  DN1 hold,DN1 unsuccesful outbound call,DN1 retrieve, rel.ExtDn"""
  Ext1DN1.MakeCall(DN1)
  DN1.AnswerCall()
  DN1.HoldCall()
  DN1.MakeCall(Ext1DN2)
  DN1.ReleaseCall()
  DN1.RetrieveCall()
  Ext1DN1.ReleaseCall()


def hold_retrieve_mon_11():
  """Internal call, originator hold"""
  DN1.MakeCall(DN2)
  DN1.HoldCall()
  DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN2.AnswerCall()
  DN1.ReleaseCall()
  DN2.ReleaseCall()

  
def hold_retrieve_mon_12():
  DN1.MakeCall(DN2)
  DN1.HoldCall()
  DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN1.ReleaseCall()
  DN2.AnswerCall()
  DN1.RetrieveCall()
  DN2.ReleaseCall()

def hold_retrieve_mon_13():
  DN1.MakeCall(DN2)
  DN1.HoldCall()
  DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN1.ReleaseCall()
  DN1.RetrieveCall()
  DN2.AnswerCall()
  DN2.ReleaseCall()




